home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / netscape / ldap / ber / stream / BERObjectId.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-13  |  2.4 KB  |  129 lines

  1. package netscape.ldap.ber.stream;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.util.StringTokenizer;
  8. import java.util.Vector;
  9.  
  10. public class BERObjectId extends BERElement {
  11.    private int[] m_value;
  12.  
  13.    public BERObjectId(int[] var1) {
  14.       this.m_value = new int[var1.length];
  15.       System.arraycopy(var1, 0, this.m_value, 0, var1.length);
  16.    }
  17.  
  18.    public BERObjectId(String var1) {
  19.       StringTokenizer var2 = new StringTokenizer(var1, ".");
  20.       this.m_value = new int[var2.countTokens()];
  21.  
  22.       for(int var3 = 0; var3 < this.m_value.length; ++var3) {
  23.          this.m_value[var3] = Integer.parseInt(var2.nextToken());
  24.       }
  25.  
  26.    }
  27.  
  28.    public BERObjectId(InputStream var1, int[] var2) throws IOException {
  29.       int var3 = BERElement.readLengthOctets(var1, var2);
  30.       var2[0] += var3;
  31.       int[] var4 = new int[1];
  32.       Vector var5 = new Vector(10);
  33.       var4[0] = 0;
  34.       int var6 = this.readSubIdentifier(var1, var4);
  35.       var3 -= var4[0];
  36.       if (var6 < 40) {
  37.          var5.addElement(new Integer(0));
  38.       } else if (var6 < 80) {
  39.          var5.addElement(new Integer(1));
  40.       } else {
  41.          var5.addElement(new Integer(2));
  42.       }
  43.  
  44.       var5.addElement(new Integer(var6 - (Integer)var5.elementAt(var5.size() - 1) * 40));
  45.  
  46.       while(var3 > 0) {
  47.          var4[0] = 0;
  48.          var6 = this.readSubIdentifier(var1, var4);
  49.          var3 -= var4[0];
  50.          var5.addElement(new Integer(var6));
  51.       }
  52.  
  53.       this.m_value = new int[var5.size()];
  54.  
  55.       for(int var7 = 0; var7 < var5.size(); ++var7) {
  56.          this.m_value[var7] = (Integer)var5.elementAt(var7);
  57.       }
  58.  
  59.    }
  60.  
  61.    public void write(OutputStream var1) throws IOException {
  62.       var1.write(6);
  63.       ByteArrayOutputStream var2 = new ByteArrayOutputStream();
  64.       this.writeSubIdentifier(var2, this.m_value[0] * 40 + this.m_value[1]);
  65.  
  66.       for(int var3 = 2; var3 < this.m_value.length; ++var3) {
  67.          this.writeSubIdentifier(var2, this.m_value[var3]);
  68.       }
  69.  
  70.       byte[] var4 = var2.toByteArray();
  71.       BERElement.sendDefiniteLength(var1, var4.length);
  72.       var1.write(var4);
  73.    }
  74.  
  75.    private int readSubIdentifier(InputStream var1, int[] var2) throws IOException {
  76.       int var4 = 0;
  77.  
  78.       int var3;
  79.       do {
  80.          var3 = var1.read();
  81.          int var10002 = var2[0]++;
  82.          var4 = var4 << 7 | var3 & 127;
  83.       } while((var3 & 128) > 0);
  84.  
  85.       return var4;
  86.    }
  87.  
  88.    private void writeSubIdentifier(OutputStream var1, int var2) throws IOException {
  89.       ByteArrayOutputStream var3;
  90.       for(var3 = new ByteArrayOutputStream(); var2 > 0; var2 >>= 7) {
  91.          var3.write(var2 & 127);
  92.       }
  93.  
  94.       byte[] var4 = var3.toByteArray();
  95.  
  96.       for(int var5 = var4.length - 1; var5 > 0; --var5) {
  97.          var1.write(var4[var5] | 128);
  98.       }
  99.  
  100.       var1.write(var4[0]);
  101.    }
  102.  
  103.    public int[] getValue() {
  104.       return this.m_value;
  105.    }
  106.  
  107.    public int getType() {
  108.       return 6;
  109.    }
  110.  
  111.    public String toString() {
  112.       if (this.m_value == null) {
  113.          return "ObjectIdentifier (null)";
  114.       } else {
  115.          String var1 = "";
  116.  
  117.          for(int var2 = 0; var2 < this.m_value.length; ++var2) {
  118.             if (var2 != 0) {
  119.                var1 = var1 + " ";
  120.             }
  121.  
  122.             var1 = var1 + this.m_value[var2];
  123.          }
  124.  
  125.          return "ObjectIdentifier {" + var1 + "}";
  126.       }
  127.    }
  128. }
  129.